import axios from 'axios';
import { mockChatList } from '../mock/chatlist';
import env from '@config/env';

// 创建axios实例
const api = axios.create({
    baseURL: env.apiBaseUrl,
    timeout: env.apiTimeout
});

// 请求拦截器
api.interceptors.request.use(
    config => {
        // 可以在这里添加token等认证信息
        if (env.enableDebug) {
            console.log(`[API Request] ${config.method.toUpperCase()} ${config.url}`, config);
        }
        return config;
    },
    error => {
        if (env.enableDebug) {
            console.error('[API Request Error]', error);
        }
        return Promise.reject(error);
    }
);

// 响应拦截器
api.interceptors.response.use(
    response => {
        if (env.enableDebug) {
            console.log(`[API Response] ${response.config.method.toUpperCase()} ${response.config.url}`, response.data);
        }
        return response.data;
    },
    error => {
        if (env.enableDebug) {
            console.error('[API Response Error]', error);
        }
        return Promise.reject(error);
    }
);

// 获取聊天列表
export const getChatList = async () => {
    if (env.enableMock) {
        // 使用模拟数据
        await new Promise(resolve => setTimeout(resolve, 500));
        return mockChatList;
    }
    // 使用真实接口
    return api.get('/chatlist');
};

// 获取单个聊天详情
export const getChatById = async (chatId) => {
    if (env.enableMock) {
        // 使用模拟数据
        await new Promise(resolve => setTimeout(resolve, 300));
        return mockChatList.find(chat => chat.id === chatId);
    }
    // 使用真实接口
    return api.get(`/chatlist/${chatId}`);
};

// 创建新聊天
export const createChat = async (chatData) => {
    if (env.enableMock) {
        // 使用模拟数据
        await new Promise(resolve => setTimeout(resolve, 300));
        return { ...chatData, id: Date.now().toString() };
    }
    // 使用真实接口
    return api.post('/chatlist', chatData);
};

// 更新聊天信息
export const updateChat = async (chatId, chatData) => {
    if (env.enableMock) {
        // 使用模拟数据
        await new Promise(resolve => setTimeout(resolve, 300));
        const chat = mockChatList.find(c => c.id === chatId);
        return { ...chat, ...chatData };
    }
    // 使用真实接口
    return api.put(`/chatlist/${chatId}`, chatData);
}; 